package com.zh.note.leetcode.linkedList;

import com.zh.note.leetcode.model.ListNode;

/**
 * 24. 两两交换链表中的节点
 * 给你一个链表，两两交换其中相邻的节点，并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题（即，只能进行节点交换）。
 */
public class LC_24_SwapPairs {

    public ListNode swapPairs(ListNode head) {
        ListNode dummy = new ListNode();
        dummy.next = head;
        ListNode cur = dummy;
        while (cur.next != null && cur.next.next != null) {
            // 保存cur后面第一个节点
            ListNode temp = cur.next;
            // 保存cur后面第二个节点
            ListNode temp1 = cur.next.next.next;
            // cur指向cur后面第二个节点
            cur.next = cur.next.next;
            cur.next.next = temp;
            temp.next  = temp1;

            // 最后cur移动两位
            cur = cur.next.next;

        }
        return dummy.next;


    }
}
